import { defineService } from 'easy'
import jwt from 'easy/middleware'
import schema from './schema'

export default defineService({
  schema,
  // onRequest(ctx, done) {
  //   // console.log('局部的 onRequest')
  //   // 该钩子总是在共享的 `onRequest` 钩子后被执行
  //   done()
  // },
  // onResponse: (ctx, done) => {
  //   // console.log('局部的 onResponse')
  //   // 该钩子总是在共享的 `response` 钩子后被执行
  //   done()
  // },
  // onError: (_err, ctx, done) => {
  //   // console.log('局部的错误:', err)
  //   // 该钩子总是在共享的 `onError` 钩子后被执行
  //   done()
  // },
  async handler(ctx) {
    console.log(this.request.url)
    const cacheData = await this.cache('userInfo', async (cacheKey) => {
      console.log(cacheKey)
      await delayTime(5000)
      const token = `Bearer ${jwt.sign({ id: 123, nick: 'name', dsf: '谁大风刮过、、‘+-098（）*&……%￥#<>?/";:{}[]\\\\@！~，。、' }, 'secret', { expiresIn: '1d' })}`
      return {
        'username': 'admin',
        'phone': 1111111111,
        'timestamp': this.timestamp,
        'this===ctx': this === ctx,
        'path': this.request.path,
        'role': 'admin',
        'avatar': 'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif',
        'introduction': 'I am a super administrator',
        token,
      }
    })
    this.busiSuc(cacheData)
  },
})

function delayTime(time: number) {
  return new Promise((resolve) => {
    setTimeout(() => {
      resolve(time)
    }, time)
  })
}
